#ifndef SMARTSTARTALGORITHM_H_
#define SMARTSTARTALGORITHM_H_
#include "Request.h"
#include <list>
#include "OLTSPInstance.h"
using namespace std;


class SmartStartAlgorithm
{
	
	float* actual_coords;
	float* origin;
	float speed;
	float total_road;
	float actual_time;
	int dimensions;
	float alpha;
	list<Request> requests;
	list<Request> requests_done;
	list<Request> calculate_offline(list<Request>::iterator begin, list<Request>::iterator end, float time_offset);
	float calculate_homing_distance(list<Request>::iterator begin, list<Request>::iterator end);
	void mark_requests_visited(list<Request>::iterator start, list<Request>::iterator end, float time_offset);
	
public:
	SmartStartAlgorithm(list<Request> requests, int dimensions, float speed, float alpha);
	virtual ~SmartStartAlgorithm();
	list<Request> calculate();
};

#endif /*SMARTSTARTALGORITHM_H_*/
